カテゴリー
D-Studio プログラム

開発紹介

ソフトウェア開発でお手伝いさせていただいた案件が論文に!

http://www.spring8.or.jp/ja/news_publications/press_release/2025/250430/

こちらの輝度計測ソフトの開発をD-Studioの方でお手伝いさせていただきました!SDDの強度取得ソフトをもとに、軸移動など組み合わせて結果を絵として表示するプログラムです。

途中で止まるバグもありましたが何とか修正入れつつ対応。最終的に良い結果が得られたようで何よりです!

今回はLabVIEW開発がメインになります。

最近はPythonメインで各種研究用スキャンプログラムの作成をメインに行っております。

カテゴリー
D-Studio プログラム

スキャンプログラム

今回研究施設向けのスキャンプログラムの作成を行いました。

こちら新しい技術の導入があり、その技術利用しながら作業の自動化という事で、
各種機器を動かしながら光の強度のスキャンを行うプログラムを作成させていただきました。
PythonとWxPython利用した簡単なものです。
いくつか問題は残ってますが、解析作業は順調かつ無事終了。
出番が少ないワンオフ的なソフトになりますが、設定ファイルさえ変えれば流用が効くので今後別件で利用できそうです!

Pythonでの簡易GUI作成はWxPythonで簡単にできるので良いですね!
複雑になるとGUI部分が難しくなるのでそこは何を使うかが悩みどころですね。

#Python
#スキャンプログラム
#WxPython
#matplotlib
#研究用アプリケーション
カテゴリー
D-Studio プログラム

TIFヘッダ編集

久しぶりの投稿はPythonプログラム!
D-Studioでは現在Pythonをメインに仕事してます!
研究施設などでよく使われる画像フォーマットのTIF。
こいつにはヘッダーがついており画像情報が詰め込まれてます。
それをPythonで編集します!

下記はサンプルクラス。
今回ヘッダ情報の取得自体は時間かからず直ぐに対応できたのだが、
書き換えの部分でかなり難航!
改めてWEB検索スキルの大事さがわかった。
画像保存の時に「tiffinfo=****」のオプションが必要!!

TIF画像のヘッダにある説明文の修正など実施したいときは参考に!
from PIL import Image, TiffImagePlugin, TiffTags
from PIL.TiffImagePlugin import _limit_rational, IFDRational

class TIF_edit:

    def __init__(self) -> None:
        pass

    def get_tag(self, imgpath):
        im = Image.open(imgpath)
        im_tag_v2 = im.tag_v2
        for k in im_tag_v2.keys():
            if TiffTags.TAGS_V2.get(k):
                print(k,TiffTags.TAGS_V2[k][1],im_tag_v2[k])
            elif TiffTags.TAGS.get(k):
                print(k,TiffTags.TAGS[k],im_tag_v2[k])

    def get_Description(self, imgpath):
        im = Image.open(imgpath)
        desc = im.tag_v2.get(270)
        print("■desc■"+str(desc))
        return desc

    def write_ImageDescription(self, imgpath, outpath, comment, upd_flag=False):
        im = Image.open(imgpath)
        tiff_info = im.tag_v2
        # 追記処理
        if upd_flag == False:
            desc = tiff_info.get(270)
            desc = str(desc)+comment
            tiff_info[270] = desc
        # 書き換え
        else:
            desc = comment
            tiff_info[270] = desc
        im.save(outpath, tiffinfo=tiff_info)
カテゴリー
D-Studio 未分類

最近のお仕事

  • WEBシステム開発サポート(大手企業向け)
  • ロゴデザイン(結婚相談所)
  • HP更新・作成(企業子会社・研究チーム)
  • 放射光施設向け研究用ソフトウェア作成
とまぁ多種多様な仕事で8、9月は忙しくなります!
ソフトウェア開発はLabVIEW,Pythonがメインでの開発。
カメラやモータなどハードとの連携したソフトの開発になります。
HP作成はWordPressやWIXなどを利用した、自己管理型のHP作成になります。
ロゴデザインは知り合いのお手伝い!良いものができました!
今回iPadで作成してMacで仕上げという初の試み!
カテゴリー
D-Studio プログラム

仕事紹介

今進行中のお仕事紹介!

パルスモーターでステージを動かしながら、荷重値を取得することを制御するプログラム開発中。

モーター制御、荷重値取得機器への接続はUSBでcom接続。そことのコマンド送受信をPythonで作成。

ユーザーインターフェースの部分はLabVIEWで作成。

コア部分はプログラマーが管理しやすいPythonでまとめておき、表面部分はユーザーが管理しやすいLabVIEWを利用すると言う仕様になっております。

こういった機器との連携プログラムもここ数年得意分野としてやっております。

LabVIEWでPython

  • TIF画像読み込み

  • 設定ファイル読込

  • 360°画像をWordPressで

カテゴリー
D-Studio プログラム

ヤフオク特定ページのスクレイピング

Yahoo!オークションの特定の商品の監視を行いたい時に使えるのがこれ。まぁ普通に通知機能とかついてるから使い道はあるのかどうかわかりませんが。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# 指定のURLをブラウザで開く
# YahooAuctionのサイト監視で情報取得できるのか?

import csv
import requests
from bs4 import BeautifulSoup

#-------------------------------------------------
## main ###
#-------------------------------------------------
if __name__=='__main__':

    # 監視したいオークションサイト
    load_url = "https://page.auctions.yahoo.co.jp/jp/auction/v**********"

    load_url = load_url
    web_data = None

    try:
        # HTML取得
        html = requests.get(load_url)
        web_data = BeautifulSoup(html.content, "html.parser")
        #print(web_data)
    except:
        print("[ERROR] Check input URL.")
        exit()

    item_list = []
    setlist = []
    ave_value = 0

    title = web_data.find_all(class_="ProductTitle__text")
    if len(title) == 0:
        print("[ERROR] Check input URL.")
        exit()

    print(title[0].text)

    now_value = ""
    sokketsu = ""

    for i in web_data.find_all(class_="Price__borderBox"):
        kakaku = i.find(class_="Price__title")
        if kakaku.text.replace(" ","") == "現在価格":
            now_value = i.find(class_="Price__value").text.replace(" ","").replace("\n","")
        elif kakaku.text.replace(" ","") == "即決価格":
            sokketsu = i.find(class_="Price__value").text.replace(" ","").replace("\n","")

    print("現在価格:",now_value, "即決価格:", sokketsu)


    cnt = 0
    for i in web_data.find_all(class_="ProductDetail__item"):
        print(i.text.replace("\n",""))

即決価格と現在価格の部分が少しややこしいですが、別の部分にあるのでこんな取り方になってます。

最高入札者情報はログインしないと見れないらしいです。

変化あればログに保存してそれをグラフで表示したり出来ると面白そうですね〜

  • 開発紹介

    ソフトウェア開発でお手伝いさせていただいた案件が論文に! http://www.spring8.or.jp/j…

  • スキャンプログラム

    今回研究施設向けのスキャンプログラムの作成を行いました。 こちら新しい技術の導入があり、その技術利用しながら作…

  • note

    note始めました!D-Studioにアップしていきます! まずはLabVIEW×Pythonという超ニッチな…

カテゴリー
D-Studio プログラム

ヤフオクのスクレイピング

Pythonは便利ですな!

Yahoo!オークションのスクレイピング。検索結果のタイトルと価格情報を表示。50件表示のみですが。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# 指定のURLをブラウザで開く
# YahooAuctionの買い物一覧は取得できるのか?

import csv
import requests
from bs4 import BeautifulSoup

#-------------------------------------------------
## main ###
#-------------------------------------------------
if __name__=='__main__':

    load_url = "https://auctions.yahoo.co.jp/search/search?p="
    item = "タフト 6BA-LA900S"

    load_url = load_url + item

    # HTML取得
    html = requests.get(load_url)
    web_data = BeautifulSoup(html.content, "html.parser")
    #print(web_data)

    item_list = []
    setlist = []
    ave_value = 0

    cnt = 0
    for i in web_data.find_all(class_="Product"):
        label = i.find(class_="Product__title")
        value = i.find(class_="Product__price")
        #print(i)
        setlist = []
        setlist.append(str(cnt))
        setlist.append(str(label.text))
        setlist.append(str(value.text))

        print(str(cnt) + ":" + str(label.text) + str(value.text))
        item_list.append(setlist)
        cnt = cnt + 1

ヤフオクに関しては結構検索したら色々出てくると思います。

今回はYahoo!ショッピングと同じ様なやり方です。

こちらでは詳しくやってます!

ヤフオクのスクレイピング

,
  • 開発紹介

    ソフトウェア開発でお手伝いさせていただいた案件が論文に! http://www.spring8.or.jp/j…

  • スキャンプログラム

    今回研究施設向けのスキャンプログラムの作成を行いました。 こちら新しい技術の導入があり、その技術利用しながら作…

  • note

    note始めました!D-Studioにアップしていきます! まずはLabVIEW×Pythonという超ニッチな…

カテゴリー
D-Studio プログラム

Yahooショッピングスクレイピング

Yahooショッピングのスクレイピングをやってました!1ページ目30件のみしか取れませんが、結構ちゃんと内容取れますね!Class名は調べないといけませんが。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# 指定のURLをブラウザで開く
# YahooShoppingの買い物一覧は取得できるのか?

import csv
import requests
from bs4 import BeautifulSoup

#-------------------------------------------------
## main ###
#-------------------------------------------------
if __name__=='__main__':

    # 30件取得
    # 並び替えはX=9(評価順)
    load_url = "https://shopping.yahoo.co.jp/"
    search_op = "search?first=1&ss_first=1&ts=1636337247&mcr=8e2a556b12cfc76cfbdc9b34f3a2d87f&sretry=0&X=9&area=28&astk=&aq=&oq=&p="
    item = "本革 長財布"

    load_url = load_url + search_op + item

    # HTML取得
    html = requests.get(load_url)
    web_data = BeautifulSoup(html.content, "html.parser")
    #print(web_data)

    item_list = []
    setlist = []
    ave_value = 0

    cnt = 0
    for i in web_data.find_all(class_="LoopList__item"):
        label = i.find(class_="_2EW-04-9Eayr")
        value = i.find(class_="_3-CgJZLU91dR")
        setlist = []
        setlist.append(str(cnt))
        setlist.append(str(label.text))
        setlist.append(str(value.text))

        print(str(cnt) + ":" + str(label.text) + "  ■価格 ¥" + str(value.text))
        ave_value = ave_value + int(value.text.replace(",", ""))
        item_list.append(setlist)
        cnt = cnt + 1

    ave = ave_value/(cnt+1)
    print("平均価格:" + str(ave))

    # 文字コードをShift_JISに指定
    with open("item_list.csv", "w", encoding="Shift_jis") as f:
        # writerオブジェクトの作成 改行記号で行を区切る
        writer = csv.writer(f, lineterminator="\n")
        # csvファイルに書き込み
        writer.writerows(item_list)



検索文字に対して30件のタイトルと価格が一覧でCSVに吐き出されます。

for文内の[class=]部分を変えることで様々な情報が取得できます。

calssの内容などは「print(web_data)」で出した結果を解析する必要ありです。

参考サイト:https://yonesuke0716.hatenablog.com/entry/2020/02/11/173408

  • 開発紹介

    ソフトウェア開発でお手伝いさせていただいた案件が論文に! http://www.spring8.or.jp/j…


  • スキャンプログラム

    今回研究施設向けのスキャンプログラムの作成を行いました。 こちら新しい技術の導入があり、その技術利用しながら作…


  • TIFヘッダ編集

    久しぶりの投稿はPythonプログラム! D-Studioでは現在Pythonをメインに仕事してます! 研究施…


  • 最近のお仕事

    WEBシステム開発サポート(大手企業向け) ロゴデザイン(結婚相談所) HP更新・作成(企業子会社・研究チーム…


  • 仕事紹介

    今進行中のお仕事紹介! パルスモーターでステージを動かしながら、荷重値を取得することを制御するプログラム開発中…


  • ヤフオク特定ページのスクレイピング

    Yahoo!オークションの特定の商品の監視を行いたい時に使えるのがこれ。まぁ普通に通知機能とかついてるから使い…


カテゴリー
D-Studio プログラム

PyQT・Plot表示

PythonでPyQtを使ったGUI開発。

Plot画面の表示について簡潔にまとめておきます。

class ScanGUI(QWidget):
~
    def initUI(self):

        # グラフ領域
        self.pw = PlotWidget(self)
        # グラフのデータ設定(初期値)
        self.vol_array = np.zeros(10)
        self.cnt_array = np.zeros(10)
        # pyqtgraphにPlot種類とデータを追加
        self.item = pyqtgraph.PlotCurveItem(x=self.cnt_array, y=self.vol_array)
        self.pw.addItem(self.item)
~

ここまではググったらいくらでも出てくるので簡単にグラフ表示はできると思います。今回はグラフをリアルタイムに更新したいのです!

self.pw.addItem(self.item)を繰り返すと?グラフが上書きされます。グチャグチャになります。

            # グラフ更新
            self.item.updateData(x=self.cnt_array, y=self.vol_array)

更新時はこれだけ。updateDataを使います。これでグラフは更新されます。

Plotの基本についてはこちらとか参照。

Pythonの記事も結構ありますので興味ある方はぜひ!

カテゴリー
D-Studio プログラム

業務紹介

現在進行中の業務紹介!

[LiveView GUI開発]

LiveView
言語:Python
環境:Windows10
特殊なカメラが出力するTIFフォーマットの画像を解析するためのGUIを作成しています。静止画はもちろん、更新される画像ファイルをリアルタイムに表示するLiveViewモードも実装しています。
画像回転、LUT対応、カラーチャート対応などの機能を実装しています。

[Scan GUI開発]

言語:Python
環境:Windows10
軸を移動しながら、決まった単位でデータを取得して行き、変化の様子を確認するためのGUIです。ハードの部分は簡易シミュレータを作成して動作確認を実施。
ユーザーがどう考えるかを検討しながら機能を追加。まだ開発途中ですがいい感じに動作しております。


このように最近はPythonによるGUI開発を主に作業しております。画像解析関連、ハード連携によるデータ解析ソフトの開発を得意としており、今回はPythonで本格的に作成してますが、Windows上でしか動かさないならC#でも作成可能です。

2021/10月現在、ソフト開発としてはかなりリーズナブルな価格で請け負っております。

会社概要 お問い合わせ