<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jamshid M</title>
    <description>The latest articles on DEV Community by Jamshid M (@jamshidm).</description>
    <link>https://dev.to/jamshidm</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F212292%2Fbce2397d-0b66-4bcb-9b5a-d94475078e25.png</url>
      <title>DEV Community: Jamshid M</title>
      <link>https://dev.to/jamshidm</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jamshidm"/>
    <language>en</language>
    <item>
      <title>SmartRCCar</title>
      <dc:creator>Jamshid M</dc:creator>
      <pubDate>Mon, 19 Aug 2019 07:29:22 +0000</pubDate>
      <link>https://dev.to/jamshidm/smartrccar-6b8</link>
      <guid>https://dev.to/jamshidm/smartrccar-6b8</guid>
      <description>&lt;h3&gt;
  
  
  Self Driving car with Computer Vision using OpenCV library
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/Jamshid-M/SmartRCCar"&gt;https://github.com/Jamshid-M/SmartRCCar&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://camo.githubusercontent.com/6ab68909ef04cef7a1a859e42f5d8fb6a115ec9d/68747470733a2f2f64726976652e676f6f676c652e636f6d2f75633f6578706f72743d766965772669643d315a4255335a796b59445a67506438382d79454a7a396f6a634e3133394c51582d" class="article-body-image-wrapper"&gt;&lt;img src="https://camo.githubusercontent.com/6ab68909ef04cef7a1a859e42f5d8fb6a115ec9d/68747470733a2f2f64726976652e676f6f676c652e636f6d2f75633f6578706f72743d766965772669643d315a4255335a796b59445a67506438382d79454a7a396f6a634e3133394c51582d" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Step 1&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Taking frame as input from RaspiCam&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vyrDA5Jk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/Jamshid-M/SmartRCCar/raw/master/examples/original.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vyrDA5Jk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/Jamshid-M/SmartRCCar/raw/master/examples/original.png" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Step 2&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Denoising frame with&lt;br&gt;
&lt;br&gt;
 &lt;code&gt;GaussianBlur&lt;/code&gt;&lt;br&gt;
&lt;br&gt;
 OpenCV fucntion&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZzUCRUQs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/Jamshid-M/SmartRCCar/raw/master/examples/blurred.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZzUCRUQs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/Jamshid-M/SmartRCCar/raw/master/examples/blurred.png" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Step 3&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Finding edges with&lt;br&gt;
&lt;br&gt;
 &lt;code&gt;Canny&lt;/code&gt;&lt;br&gt;
&lt;br&gt;
 edge detection, OpenCV function&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xz17oiZP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/Jamshid-M/SmartRCCar/raw/master/examples/Canny.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xz17oiZP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/Jamshid-M/SmartRCCar/raw/master/examples/Canny.png" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Step 4&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Finding yellow colors in the frame with&lt;br&gt;
&lt;br&gt;
 &lt;code&gt;inRange&lt;/code&gt;&lt;br&gt;
&lt;br&gt;
 OpenCV function&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--A-03Ipxz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/Jamshid-M/SmartRCCar/raw/master/examples/inRange.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--A-03Ipxz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/Jamshid-M/SmartRCCar/raw/master/examples/inRange.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Step 5&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;After applying step 3 and step 4 we use&lt;br&gt;
&lt;br&gt;
 &lt;code&gt;bitwise_and&lt;/code&gt;&lt;br&gt;
&lt;br&gt;
 for two frames, this function returns intersection points of two frames. &lt;br&gt;&lt;br&gt;
Also applying dilate function will help you with finding lines by increasing pixels near our line pixels.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RXXfesz3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/Jamshid-M/SmartRCCar/raw/master/examples/Canny%2BinRange.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RXXfesz3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/Jamshid-M/SmartRCCar/raw/master/examples/Canny%2BinRange.png" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Step 6&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Finally we have to mask our frame for avoiding unnecessary lines and pixels in our frame &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--e-U8dQUH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/Jamshid-M/SmartRCCar/raw/master/examples/mask.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--e-U8dQUH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/Jamshid-M/SmartRCCar/raw/master/examples/mask.png" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After this step we just apply&lt;br&gt;
&lt;br&gt;
 &lt;code&gt;HoughLines&lt;/code&gt;&lt;br&gt;
&lt;br&gt;
 function and find right and left lines appropriately.&lt;br&gt;&lt;br&gt;
With the help of right and left lines we will predict turn in predictTurn function&lt;/p&gt;

&lt;p&gt;In this project I've made also traffic light recognition with color filtering and traffic sign recognition with Cascade classifier (xml)&lt;/p&gt;

</description>
      <category>computervision</category>
      <category>imageprocessing</category>
      <category>raspberrypi</category>
      <category>opencv</category>
    </item>
    <item>
      <title>Native Android Database</title>
      <dc:creator>Jamshid M</dc:creator>
      <pubDate>Wed, 14 Aug 2019 14:58:49 +0000</pubDate>
      <link>https://dev.to/jamshidm/native-android-database-5bh</link>
      <guid>https://dev.to/jamshidm/native-android-database-5bh</guid>
      <description>&lt;p&gt;Linking sqlite3 library in C language with Android framework&lt;br&gt;
&lt;a href="https://github.com/Jamshid-M/NativeDB"&gt;https://github.com/Jamshid-M/NativeDB&lt;/a&gt;&lt;/p&gt;

</description>
      <category>android</category>
      <category>cpp</category>
      <category>java</category>
      <category>sql</category>
    </item>
  </channel>
</rss>
